﻿#region Using

using SAPbouiCOM;
using SapFramework.Interface.Controls.Items.Base;
using SapFramework.Interface.Events;

using Form = SapFramework.Interface.Controls.Forms.Base.Form;
using Item = SapFramework.Interface.Controls.Items.Base.Item;

#endregion

namespace SapFramework.Interface.Controls.Items.Specific
{
    /// <summary>
    /// Realiza o encapsulamento de um objeto do tipo <see cref="SAPbouiCOM.PictureBox"/> da UI API do SAP Business One
    /// </summary>
    public sealed class PictureBox : Item, SAPbouiCOM.PictureBox
    {
        #region Eventos

        /// <summary>
        /// Disparado antes da exibição do menu que ocorre quando um clique com o botão direito do mouse é feito sobre um item.
        /// </summary>
        [Event( BoEventTypes.et_RIGHT_CLICK )]
        public event EventBoolContextMenu OnBeforeRightClick;

        /// <summary>
        /// Disparado após a exibição do menu que ocorre quando um clique com o botão direito do mouse é feito sobre um item.
        /// </summary>
        [Event( BoEventTypes.et_RIGHT_CLICK )]
        public event EventVoidContextMenu OnAfterRightClick;

        #endregion

        /// <summary>
        /// Guarda uma referencia para a parte específica do item
        /// </summary>
        private readonly SAPbouiCOM.PictureBox mPictureBox;

        /// <summary>
        /// Construtor
        /// </summary>
        /// <param name="aForm">O formulário ao qual o item pertence</param>
        /// <param name="aItemUniqueId">Id único do Item do Form do SAP Business One</param>
        public PictureBox( Form aForm, string aItemUniqueId ) : base( aForm, aItemUniqueId, BoFormItemTypes.it_PICTURE )
        {
            mPictureBox = mItem.Specific as SAPbouiCOM.PictureBox;
        }

        #region Implementation of IPictureBox

        /// <summary>
        /// O caminho para um arquivo de imagem para ser mostrado no componente
        /// </summary>
        /// <remarks>
        /// Os seguintes formatos são suportados:
        /// <list type="bullet">
        /// <item>JPG</item>
        /// <item>BMP</item>
        /// <item>PNG</item>
        /// <item>PCX</item>
        /// </list>
        /// </remarks>
        public string Picture
        {
            get { return mPictureBox.Picture; }
            set { mPictureBox.Picture = value; }
        }

        /// <summary>
        /// Referência para o objeto <see cref="DataBind"/>, que realiza uma ligação com um:
        /// <list type="bullet">
        /// <see cref="UserDataSource"/>
        /// <see cref="DBDataSource"/>
        /// <see cref="DataTable"/>
        /// </list>
        /// </summary>
        /// <see cref="DataBind"/>
        public DataBind DataBind
        {
            get { return mPictureBox.DataBind; }
        }

        #endregion
    }
}